/**
 * 全站http配置
 *
 * axios参数说明
 * isSerialize是否开启form表单提交
 * isToken是否需要token
 */
import axios from 'axios'
import Vue from 'vue'
import { serialize } from '../utils/util'
const getBaseUrl = () => {
  return Vue.prototype.VUE_APP_BASE_API
}

// http request拦截
axios.interceptors.request.use(
  (config) => {
    config.baseURL = getBaseUrl()
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)
// http response 拦截
axios.interceptors.response.use(
  (res) => {
    // 获取状态码
    const status = res.data.code || res.status
    const statusWhiteList = []
    let message // = res.data.msg || res.data.error_description || '请重新登录';
    // 如果在白名单里则自行catch逻辑处理
    if (statusWhiteList.includes(status)) return Promise.reject(res)

    // 如果请求为非200否者默认统一处理
    if (status !== 200) {
      return Promise.reject(new Error(message))
    }
    return res.data
  },
  (error) => {
    return Promise.reject(new Error(error))
  }
)

export default axios
